<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
  // 箭头函数

//   function fn (val) {
//     return val
//   }
  // 转换成箭头函数的写法
//   let fn = (val) => {
//     return val
//   }
  // 1.如果箭头函数只有一个参数的话（）可以省略不写。
//   let fn = val => {
//     return val
//   }
  // 2.如果箭头函数有返回值，并且，函数的处理逻辑不复杂。{} return 都能省略不写；
//   let fn = val => val
//   console.log(fn(10));

//箭头函数和普通函数的区别？
// 1.普通函数可以通过 arguments 来获取不确定参数。箭头函数没有 arguments，箭头函数可以通过剩余参数来获取不确定参数

// function fn (){
// //    console.log(arguments);
//    let num = 0
//    for (let i = 0; i < arguments.length; i++) {
//      num+=arguments[i]
//    }
//    return num
// }
// console.log(fn(4,5,6));

// let fn = (...val) => { // ...val 叫剩余参数
//     // console.log(arguments);
//     console.log(val);
// }
// console.log(fn(4,5,6));

// 2.this指向的区别，在箭头函数中，不固话this指向，箭头函数的this指向，只和声明箭头函数的作用域的this指向有关系（换句话说：箭头函数的this指向只和父作用域的this指向保持一致）
// 普通函数的this指向，谁调用就指向谁，全局下就指向window。

// let obj = {
//   name: "麻子",
//   sing: () => {
//     console.log(this);
//     setTimeout(() => {
//         console.log(this);
//     })
//   }
// }
// obj.sing();

// 3.箭头函数不能使用new 关键字。
// function start(){ // 他也叫构造函数，为了区分，普通函数和构造函数，我们一般习惯上把构造函数的首字母大写。
//   this.name = '王五'
// }
// let obj = new start(); // 创建了一个对象，
// console.log(obj);


// let start = () => {
//     this.name = "李四"
// }
// let obj = new start();





</script>